﻿using System;

namespace Kaleida.ServiceMonitor.Model
{
    public static class DateTimeExtensions
    {
        public static string ToRelative(this TimeSpan period)
        {
            if (period.TotalDays <= -2) return (int)-period.TotalDays + " days ago";
            if (period.TotalHours <= -2) return (int)-period.TotalHours + " hours ago";
            if (period.TotalMinutes <= -2) return (int)-period.TotalMinutes + " minutes ago";
            if (period.TotalSeconds <= -2) return (int)-period.TotalSeconds + " seconds ago";

            if (period.TotalSeconds < 2) return "about now";

            if (period.TotalMinutes < 2) return "in " + (int)period.TotalSeconds + " seconds";
            if (period.TotalHours < 2) return "in " + (int)period.TotalMinutes + " minutes";
            if (period.TotalDays < 2) return "in " + (int)period.TotalHours + " hours";

            return "in " + (int)period.TotalDays + " days";
        }

        public static string RelativeToNow(this DateTime? date, string nullValue = "unknown")
        {
            return date.HasValue ? date.Value.RelativeToNow() : nullValue;
        }

        public static string RelativeToNow(this DateTime date)
        {
            return (date - DateTime.Now).ToRelative();
        }
    }
}
